package com.zycfc.zsf.boot.web.autoconfigure;

import org.springframework.boot.context.properties.*;

@ConfigurationProperties("zsf.boot.web")
public class WebProperties
{
    public static final String PREFIX = "zsf.boot.web";
    private Converter converter;
    
    public WebProperties() {
        this.converter = new Converter();
    }
    
    public Converter getConverter() {
        return this.converter;
    }
    
    public void setConverter(final Converter converter) {
        this.converter = converter;
    }
    
    @Override
    public boolean equals(final Object o) {
        if (o == this) {
            return true;
        }
        if (!(o instanceof WebProperties)) {
            return false;
        }
        final WebProperties other = (WebProperties)o;
        if (!other.canEqual(this)) {
            return false;
        }
        final Object this$converter = this.getConverter();
        final Object other$converter = other.getConverter();
        if (this$converter == null) {
            if (other$converter == null) {
                return true;
            }
        }
        else if (this$converter.equals(other$converter)) {
            return true;
        }
        return false;
    }
    
    protected boolean canEqual(final Object other) {
        return other instanceof WebProperties;
    }
    
    @Override
    public int hashCode() {
        final int PRIME = 59;
        int result = 1;
        final Object $converter = this.getConverter();
        result = result * 59 + (($converter == null) ? 43 : $converter.hashCode());
        return result;
    }
    
    @Override
    public String toString() {
        return "WebProperties(converter=" + this.getConverter() + ")";
    }
    
    static class Converter
    {
        private StringToDate stringToDate;
        private StringToBaseEnum stringToBaseEnum;
        
        public Converter() {
            this.stringToDate = new StringToDate();
            this.stringToBaseEnum = new StringToBaseEnum();
        }
        
        public StringToDate getStringToDate() {
            return this.stringToDate;
        }
        
        public StringToBaseEnum getStringToBaseEnum() {
            return this.stringToBaseEnum;
        }
        
        public void setStringToDate(final StringToDate stringToDate) {
            this.stringToDate = stringToDate;
        }
        
        public void setStringToBaseEnum(final StringToBaseEnum stringToBaseEnum) {
            this.stringToBaseEnum = stringToBaseEnum;
        }
        
        @Override
        public boolean equals(final Object o) {
            if (o == this) {
                return true;
            }
            if (!(o instanceof Converter)) {
                return false;
            }
            final Converter other = (Converter)o;
            if (!other.canEqual(this)) {
                return false;
            }
            final Object this$stringToDate = this.getStringToDate();
            final Object other$stringToDate = other.getStringToDate();
            Label_0065: {
                if (this$stringToDate == null) {
                    if (other$stringToDate == null) {
                        break Label_0065;
                    }
                }
                else if (this$stringToDate.equals(other$stringToDate)) {
                    break Label_0065;
                }
                return false;
            }
            final Object this$stringToBaseEnum = this.getStringToBaseEnum();
            final Object other$stringToBaseEnum = other.getStringToBaseEnum();
            if (this$stringToBaseEnum == null) {
                if (other$stringToBaseEnum == null) {
                    return true;
                }
            }
            else if (this$stringToBaseEnum.equals(other$stringToBaseEnum)) {
                return true;
            }
            return false;
        }
        
        protected boolean canEqual(final Object other) {
            return other instanceof Converter;
        }
        
        @Override
        public int hashCode() {
            final int PRIME = 59;
            int result = 1;
            final Object $stringToDate = this.getStringToDate();
            result = result * 59 + (($stringToDate == null) ? 43 : $stringToDate.hashCode());
            final Object $stringToBaseEnum = this.getStringToBaseEnum();
            result = result * 59 + (($stringToBaseEnum == null) ? 43 : $stringToBaseEnum.hashCode());
            return result;
        }
        
        @Override
        public String toString() {
            return "WebProperties.Converter(stringToDate=" + this.getStringToDate() + ", stringToBaseEnum=" + this.getStringToBaseEnum() + ")";
        }
    }
    
    static class StringToDate
    {
        private boolean enabled;
        
        public StringToDate() {
            this.enabled = true;
        }
        
        public boolean isEnabled() {
            return this.enabled;
        }
        
        public void setEnabled(final boolean enabled) {
            this.enabled = enabled;
        }
        
        @Override
        public boolean equals(final Object o) {
            if (o == this) {
                return true;
            }
            if (!(o instanceof StringToDate)) {
                return false;
            }
            final StringToDate other = (StringToDate)o;
            return other.canEqual(this) && this.isEnabled() == other.isEnabled();
        }
        
        protected boolean canEqual(final Object other) {
            return other instanceof StringToDate;
        }
        
        @Override
        public int hashCode() {
            final int PRIME = 59;
            int result = 1;
            result = result * 59 + (this.isEnabled() ? 79 : 97);
            return result;
        }
        
        @Override
        public String toString() {
            return "WebProperties.StringToDate(enabled=" + this.isEnabled() + ")";
        }
    }
    
    static class StringToBaseEnum
    {
        private boolean enabled;
        
        public StringToBaseEnum() {
            this.enabled = true;
        }
        
        public boolean isEnabled() {
            return this.enabled;
        }
        
        public void setEnabled(final boolean enabled) {
            this.enabled = enabled;
        }
        
        @Override
        public boolean equals(final Object o) {
            if (o == this) {
                return true;
            }
            if (!(o instanceof StringToBaseEnum)) {
                return false;
            }
            final StringToBaseEnum other = (StringToBaseEnum)o;
            return other.canEqual(this) && this.isEnabled() == other.isEnabled();
        }
        
        protected boolean canEqual(final Object other) {
            return other instanceof StringToBaseEnum;
        }
        
        @Override
        public int hashCode() {
            final int PRIME = 59;
            int result = 1;
            result = result * 59 + (this.isEnabled() ? 79 : 97);
            return result;
        }
        
        @Override
        public String toString() {
            return "WebProperties.StringToBaseEnum(enabled=" + this.isEnabled() + ")";
        }
    }
}
